package com.example.ccjml;

import com.example.ccj.b.c.form.MForm;
import com.example.ccj.b.c.form.MFormField;
import com.example.ccj.u.TimeUtils;

import java.io.Serializable;

/**
 * 试卷加载配置
 * @author 驰珺
 * whechat   : chijun9
 * create at : 2024/5/17 11:56
 */
@MForm("创建试卷")
public class ExamLoadConfig implements Serializable {
    /**
     * 考试配置
     */
    @MFormField(value = "编号",isNoNUll = true,isCanModify = false,order = 1)
    private String id;

    /**
     * 考试名称
     */
    @MFormField(value = "名称",hint = "考试名称", order = 2)
    private String name = "默认";

    /**
     * 试题来源  口算还是题库
     */
    @MFormField(value = "试题来源",isNoNUll = true ,option = {"口算","题库"},type = MFormField.DAN_OPTION, order = 3)
    private int source;

     /**
     * 题库编号
     */
     @MFormField(value = "题库",hint = "选择题库",isNoNUll = true,superF = "source.1",type = MFormField.DAN_OPTION, order = 4)
    private String bankId = "000000";

    /**
     * 试题类型-数量-每题分数
     */
    @MFormField(value = "题库",hint = "选择试题",isNoNUll = true,superF = "source.1",type = MFormField.JUMP, order = 5)
    private String typeNumFraction = "0-10-1";

    /**
     * 口算试题类型
     */
    @MFormField(value = "口算",hint = "选择口算试题类型",isNoNUll = true,superF = "source.0",type = MFormField.DAN_OPTION, order = 4)
    private String ksPath;

    /**
     * 总题数
     */
    @MFormField(value = "总题数",hint = "填写试题数量",isNoNUll = true,superF = "source.0", type = MFormField.NUMBER ,order = 5)
    private Integer alwaysQuestion = 10;

    /**
     * 总时间，分
     */
    @MFormField(value = "总时间",isNoNUll = true ,type = MFormField.NUMBER, order = 10)
    private Integer totalTime = 45;

    /**
     * 及格分数
     */
    @MFormField(value = "及格分数",isNoNUll = true ,type = MFormField.NUMBER, order = 11)
    private Integer passFraction = 60;

    /**
     * 开始考试时间
     */
    @MFormField(value = "开始时间",isNoNUll = true ,type = MFormField.TIME, order = 12)
    private String startTime = TimeUtils.getNowString();

    /**
     * 结束考试时间
     */
    @MFormField(value = "结束时间",type = MFormField.TIME, order = 13)
    private String stopTime;


    /**
     * 可考试次数
     */
    @MFormField(value = "可考试次数",hint = "可考试次数" ,type = MFormField.NUMBER,order = 14)
    private Integer examNum = 2;

    /**
     * 参考人员  -1代表全体团队人员
     */
    @MFormField(value = "参考人员",hint = "请选择参考人员", isCanModify = false ,type = MFormField.DAN_OPTION,order = 15)
    private String joinPerson = "-1";


    /**
     * 选项是否乱序
     */
    @MFormField(value = "是否乱序",hint = "选项是否乱序",isOnlySelect = true, type = MFormField.BOOLEAN, order = 19)
    private Boolean isOptionOutOfOrder = false;

    /**
     * 错题优先
     */
    @MFormField(value = "错题优先",hint = "是否错题优先",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean isErrorFirst = true;

    /**
     * 未做题优先
     */
    @MFormField(value = "未做优先",hint = "是否未做优先",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean isNotDoneFirst = true;

    /**
     * 千人千题
     */
    @MFormField(value = "千人千题",hint = "是否没人的试卷均不相同",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean thousandsOfQuestions = false;


    /**
     * 考前拍照
     */
    @MFormField(value = "考前拍照",hint = "是否考前拍照",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean beforePhotograph;

    /**
     * 考后拍照
     */
    @MFormField(value = "考后拍照",hint = "是否考后拍照",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean laterPhotograph = false;

    /**
     * 禁止复制
     */
    @MFormField(value = "禁止复制",hint = "是否禁止复制",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean noCopy = false;

    /**
     * 禁止粘贴
     */
    @MFormField(value = "禁止粘贴",hint = "是否禁止粘贴",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean noPaste = false;

    /**
     * 成绩可查询
     */
    @MFormField(value = "成绩可查询",hint = "成绩可是否查询",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean isScoreInquiry = true;

    /**
     * 禁止切屏
     */
    @MFormField(value = "禁止切屏",hint = "是否禁止切屏",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean limitCuttingscreen = false;

    /**
     * 禁止截屏
     */
    @MFormField(value = "禁止截屏",hint = "是否禁止截屏",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean limitScreenshots = false;

    /**
     * 显示分数
     */
    @MFormField(value = "显示分数",hint = "是否显示分数",isOnlySelect = true,type = MFormField.BOOLEAN, order = 19)
    private Boolean isShowScore = true;

    /**
     * 创建时间
     */
    @MFormField(value = "创建时间",hint = "创建时间", isCanModify = false ,order = 30)
    private String createTime = TimeUtils.getNowString();

    /**
     * 说明
     */
    @MFormField(value = "说明",hint = "说明", isCanModify = false ,order = 40)
    private String method = "这是默认配置";


    /**
     * 创建人员id
     */
    private String createUserId;

    /**
     * 封面
     */
    private String cover;

    /**
     * 总分
     */
    private Double alwaysScores = 10.0;

    /**
     * 状态0，准备中，1：准备完毕，2,：考试结束
     */
    private Integer state = 2;

    /**
     * 团队id
     */
    private String teamId;

    /**
     * 修改时间
     */
    private String modifyTime;

    private int mode = 1;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSource() {
        return source;
    }

    public void setSource(int source) {
        this.source = source;
    }

    public String getBankId() {
        return bankId;
    }

    public void setBankId(String bankId) {
        this.bankId = bankId;
    }

    public String getTypeNumFraction() {
        return typeNumFraction;
    }

    public void setTypeNumFraction(String typeNumFraction) {
        this.typeNumFraction = typeNumFraction;
    }

    public String getKsPath() {
        return ksPath;
    }

    public void setKsPath(String ksPath) {
        this.ksPath = ksPath;
    }

    public Integer getAlwaysQuestion() {
        return alwaysQuestion;
    }

    public void setAlwaysQuestion(Integer alwaysQuestion) {
        this.alwaysQuestion = alwaysQuestion;
    }

    public Integer getTotalTime() {
        return totalTime;
    }

    public void setTotalTime(Integer totalTime) {
        this.totalTime = totalTime;
    }

    public Integer getPassFraction() {
        return passFraction;
    }

    public void setPassFraction(Integer passFraction) {
        this.passFraction = passFraction;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getStopTime() {
        return stopTime;
    }

    public void setStopTime(String stopTime) {
        this.stopTime = stopTime;
    }

    public Integer getExamNum() {
        return examNum;
    }

    public void setExamNum(Integer examNum) {
        this.examNum = examNum;
    }

    public String getJoinPerson() {
        return joinPerson;
    }

    public void setJoinPerson(String joinPerson) {
        this.joinPerson = joinPerson;
    }

    public Boolean getOptionOutOfOrder() {
        return isOptionOutOfOrder;
    }

    public void setOptionOutOfOrder(Boolean optionOutOfOrder) {
        isOptionOutOfOrder = optionOutOfOrder;
    }

    public Boolean getErrorFirst() {
        return isErrorFirst;
    }

    public void setErrorFirst(Boolean errorFirst) {
        isErrorFirst = errorFirst;
    }

    public Boolean getNotDoneFirst() {
        return isNotDoneFirst;
    }

    public void setNotDoneFirst(Boolean notDoneFirst) {
        isNotDoneFirst = notDoneFirst;
    }

    public Boolean getThousandsOfQuestions() {
        return thousandsOfQuestions;
    }

    public void setThousandsOfQuestions(Boolean thousandsOfQuestions) {
        this.thousandsOfQuestions = thousandsOfQuestions;
    }

    public Boolean getBeforePhotograph() {
        return beforePhotograph;
    }

    public void setBeforePhotograph(Boolean beforePhotograph) {
        this.beforePhotograph = beforePhotograph;
    }

    public Boolean getLaterPhotograph() {
        return laterPhotograph;
    }

    public void setLaterPhotograph(Boolean laterPhotograph) {
        this.laterPhotograph = laterPhotograph;
    }

    public Boolean getNoCopy() {
        return noCopy;
    }

    public void setNoCopy(Boolean noCopy) {
        this.noCopy = noCopy;
    }

    public Boolean getNoPaste() {
        return noPaste;
    }

    public void setNoPaste(Boolean noPaste) {
        this.noPaste = noPaste;
    }

    public Boolean getScoreInquiry() {
        return isScoreInquiry;
    }

    public void setScoreInquiry(Boolean scoreInquiry) {
        isScoreInquiry = scoreInquiry;
    }

    public Boolean getLimitCuttingscreen() {
        return limitCuttingscreen;
    }

    public void setLimitCuttingscreen(Boolean limitCuttingscreen) {
        this.limitCuttingscreen = limitCuttingscreen;
    }

    public Boolean getLimitScreenshots() {
        return limitScreenshots;
    }

    public void setLimitScreenshots(Boolean limitScreenshots) {
        this.limitScreenshots = limitScreenshots;
    }

    public Boolean getShowScore() {
        return isShowScore;
    }

    public void setShowScore(Boolean showScore) {
        isShowScore = showScore;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public String getCreateUserId() {
        return createUserId;
    }

    public void setCreateUserId(String createUserId) {
        this.createUserId = createUserId;
    }

    public String getCover() {
        return cover;
    }

    public void setCover(String cover) {
        this.cover = cover;
    }

    public Double getAlwaysScores() {
        return alwaysScores;
    }

    public void setAlwaysScores(Double alwaysScores) {
        this.alwaysScores = alwaysScores;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public String getTeamId() {
        return teamId;
    }

    public void setTeamId(String teamId) {
        this.teamId = teamId;
    }

    public String getModifyTime() {
        return modifyTime;
    }

    public void setModifyTime(String modifyTime) {
        this.modifyTime = modifyTime;
    }

    public int getMode() {
        return mode;
    }

    public void setMode(int mode) {
        this.mode = mode;
    }
}
